package ua.edu.test.adapter;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import ua.edu.test.R;
import java.util.ArrayList;
import java.util.List;


public class ExpListAdapter extends BaseExpandableListAdapter {

	private static final String LOG_TAG = ExpListAdapter.class.getName();

	private ArrayList <ArrayList<String> > groups;
	private Context context;


	String db_first_card_history[] = new String[]{
			"История действий",
			"действие 1  16.06.14 21:30",
			"действие 2  16.06.14 22:11",
			"действие 3  16.06.14 22:15",
			"действие 4  16.06.14 22:25",
			"действие 5  16.06.14 22:27",
			"действие 6  16.06.14 22:29",
			"действие 7  16.06.14 22:35",
			"действие 8  16.06.14 22:37",
			"действие 9  16.06.14 22:57",
			"действие 10  16.06.14 22:85"
	};

	String db_second_card_history[] = new String[]{
			"История действий",
			"баланс  16.03.14 21:30",
			"пополнение моб тел  17.03.14 22:11",
			"баланс  18.03.14 22:15",
			"перевод на другую карту  20.03.14 15:25",
			"баланс  23.03.14 16:11",
			"баланс  25.03.14 17:35",
			"пополнение моб тел  27.03.14 11:55",
			"баланс  31.03.14 22:35",
			"пополнение моб тел  05.04.14 18:01",
			"перевод на другую карту  07.04.14 18:85"
	};

	String db_third_card_history[] = new String[]{
			"История операций",
			"действие 1  16.06.14 21:30",
			"действие 2  16.06.14 22:11",
			"действие 3  16.06.14 22:15"
	};





	public ExpListAdapter(Context context, ArrayList< ArrayList<String> > groups) {
		this.context = context;
		this.groups = groups;
	}



	@Override
	public int getGroupCount() {
		return groups.size();
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return groups.get(groupPosition).size();
	}

	@Override
	public Object getGroup(int groupPosition) {
		return groups.get(groupPosition);
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		return groups.get(groupPosition).get(childPosition);
	}

	@Override
	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		return childPosition;
	}

	@Override
	public boolean hasStableIds() {
		return true;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
		BankHolder holder = null;

		if (convertView == null) {
			LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = inflater.inflate(R.layout.pattern_tab2_mycard_group_view, null);

			holder = new BankHolder();
			holder.imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
			holder.textGroup1 = (TextView) convertView.findViewById(R.id.textGroup1);
			holder.textGroup2 = (TextView) convertView.findViewById(R.id.textGroup2);
			holder.textGroup3 = (TextView) convertView.findViewById(R.id.textGroup3);
			holder.textGroup4 = (TextView) convertView.findViewById(R.id.textGroup4);

			convertView.setTag(holder);
		} else {
			holder = (BankHolder) convertView.getTag();
		}




		switch (groupPosition) {
			case 0: {
				holder.imgIcon.setImageResource(R.drawable.ic_bank_privat);
				holder.textGroup1.setText("Work");
				holder.textGroup2.setText("ПриватБанк");
				holder.textGroup3.setText("1700.50");
				holder.textGroup4.setText("15.06.14 14:29");
				return convertView;
			}

			case 1: {
				holder.imgIcon.setImageResource(R.drawable.ic_bank_aval);
				holder.textGroup1.setText("Student");
				holder.textGroup2.setText("Аваль");
				holder.textGroup3.setText("700.50");
				holder.textGroup4.setText("15.06.14 15:45");
				return convertView;
			}

			case 2: {
				holder.imgIcon.setImageResource(R.drawable.ic_bank_privat);
				holder.textGroup1.setText("Credit");
				holder.textGroup2.setText("ЭксимБанк");
				holder.textGroup3.setText("12700.50");
				holder.textGroup4.setText("15.06.14 22:30");
				return convertView;
			}

		}


		if (isExpanded) {
			//Изменяем что-нибудь, если текущая Group раскрыта
		} else {
			//Изменяем что-нибудь, если текущая Group скрыта
		}

		return convertView;

	}

	//Метод для получения (просмотра) исории о выбранной карте.
	//Вызывается несколько раз, когда мы нажимаем на любую из карт в [мои карты].
	//Метод вызывается столько раз, сколько есть элементов expandableListView, например 11 элементов = 11 вызовов.
	@Override
	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
//		Log.d(LOG_TAG, "==============called: getChildView");
		if (convertView == null) {
			LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			convertView = inflater.inflate(R.layout.pattern_tab2_mycard_child_view, null);
		}

		TextView textChild = (TextView) convertView.findViewById(R.id.textViewChieldView);
		if (groupPosition == 0) {
			textChild.setText(db_first_card_history[childPosition]);
//			Log.d(LOG_TAG, "*********************** groupPosition");
		}
		if (groupPosition == 1) {
			textChild.setText(db_second_card_history[childPosition]);
		}
		if (groupPosition == 2) {
			textChild.setText(db_third_card_history[childPosition]);
		}


		return convertView;
	}



	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}




	static class BankHolder {
		ImageView imgIcon;
		TextView textGroup1;
		TextView textGroup2;
		TextView textGroup3;
		TextView textGroup4;
	}
}